package cn.seecoder.ai.service;

import cn.seecoder.ai.model.vo.FileInfoVO;
import cn.seecoder.ai.model.vo.ResultVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @author fanyanpeng
 * @date 2023/4/11 20:37
 */
public interface FileInfoService {




    /**
     * 添加文件到hdfs
     * 注意，本服务提供并不支持文件分析，仅将文件远程保存。
     * @author   fanyanpeng
     * @date 2023/4/11 20:39
     * @param fileName 新命名的文件名
     * @param userId 用户id
     * @param file 文件
     * @return cn.seecoder.ai.model.vo.FileInfoVO
     */
    FileInfoVO addFile(String fileName,
                       Integer userId,
                       MultipartFile file);

    /**
     * 获取文件信息，包括各字段信息
     *
     * @param userId
     * @param fileInfoId
     * @return cn.seecoder.ai.model.vo.FileInfoVO
     * @author fanyanpeng
     * @date 2023/4/11 20:43
     */
    FileInfoVO getFileInfo(Integer userId,
                                  Integer fileInfoId);


    /**
     * 获取某用户的所有文件信息
     * @author   fanyanpeng
     * @date 2023/4/11 20:44
     * @param userId
     * @return cn.seecoder.ai.model.vo.ResultVO<java.util.List<cn.seecoder.ai.model.vo.FileInfoVO>>
     */
    List<FileInfoVO> getFileInfoListByUserId(Integer userId);


    /**
     * 根据数据库导入数据，
     * 注意，本服务提供并不支持文件分析，仅将文件远程保存。
     * @author   fanyanpeng
     * @date 2023/4/11 20:45
     * @param
     * @return cn.seecoder.ai.model.vo.ResultVO<cn.seecoder.ai.model.vo.FileInfoVO>
     */
    public FileInfoVO addTable(String url,
                               String user,
                               String password,
                               String tableName,
                               String fileName,
                               Integer userId);



    Boolean saveFileInfoVO(FileInfoVO fileInfoVO);


    Boolean isFit(List<String> features,Integer fileId);

    List<String> autoChooseFeatures(Integer userId, Integer fileId, String label);
}
